home *** CD-ROM | disk | FTP | other *** search
- /*
- * @(#)ExampleApplet.java 1.2 97/01/14 Jeff Dinkins
- *
- * Copyright (c) 1995-1997 Sun Microsystems, Inc. All Rights Reserved.
- *
- */
-
- package actual;
-
- import java.applet.*;
- import java.util.*;
- import java.awt.*;
-
- /**
- * This applet creates a window that has a pretty background
- * picture, and adds several lightweight Gauge objects.
- *
- * Notice how parts of the lightweight Gauges are "transparent"
- * and you can see the image behind them! Cool!
- */
- public class ExampleApplet extends Applet {
-
- public void init() {
-
- setLayout(new BorderLayout());
-
- // create a double buffer panel and add it to the
- // center of the frame
- DoubleBufferPanel dbp = new DoubleBufferPanel();
- dbp.setLayout(new BorderLayout());
- add("Center", dbp);
-
- // create a pretty panel and add it to the
- // double buffer panel
-
- //needed because ExampleApplet is running under Switcher
- Applet parentApplet;
-
- //Get the parent Applet object.
- try {
- parentApplet = (Applet)getParent();
- PrettyPanel pp = new PrettyPanel(parentApplet);
- pp.setLayout(new FlowLayout());
- dbp.add("Center", pp);
-
- // *** Create Gauges
- Gauge gauge1 = new Gauge(Color.green.darker());
- pp.add(gauge1);
-
- Gauge gauge2 = new Gauge(Color.red.darker());
- pp.add(gauge2);
-
- Gauge gauge3 = new Gauge(Color.cyan);
- pp.add(gauge3);
-
- Gauge gauge4 = new Gauge();
- pp.add(gauge4);
-
- Gauge gauge5 = new Gauge(Color.blue.darker());
- pp.add(gauge5);
-
- Gauge gauge6 = new Gauge(Color.pink.darker());
- pp.add(gauge6);
-
- Gauge gauge7 = new Gauge(Color.yellow);
- pp.add(gauge7);
-
- // *** Create threads to drive the gauges
- GaugeThread gaugeThread1 = new GaugeThread(gauge1);
- gaugeThread1.start();
-
- GaugeThread gaugeThread2 = new GaugeThread(gauge2);
- gaugeThread2.start();
-
- GaugeThread gaugeThread3 = new GaugeThread(gauge3);
- gaugeThread3.start();
-
- GaugeThread gaugeThread4 = new GaugeThread(gauge4);
- gaugeThread4.start();
-
- GaugeThread gaugeThread5 = new GaugeThread(gauge5);
- gaugeThread5.start();
-
- GaugeThread gaugeThread6 = new GaugeThread(gauge6);
- gaugeThread6.start();
-
- GaugeThread gaugeThread7 = new GaugeThread(gauge7);
- gaugeThread7.start();
-
- } catch (ClassCastException e) {
- System.err.println("Parent isn't an Applet!");
- throw(e);
- }
- }
- }
-
-
- class PrettyPanel extends Container {
- Image background;
-
- PrettyPanel(Applet applet) {
- background = applet.getImage(applet.getCodeBase(),
- "images/mandrill.jpg");
- }
-
- /**
- * override update to *not* erase the background before painting
- */
- public void update(Graphics g) {
- paint(g);
- }
-
- /**
- * paint the background picture, then call super.paint which
- * will paint all contained components
- *
- * Note: You MUST call super.paint(g) or the lightweight
- * component(s) won't get painted.
- */
- public void paint(Graphics g) {
- g.drawImage(background, 0, 0, getSize().width, getSize().height,
- getBackground(), this);
- super.paint(g);
- }
- }
-
- class GaugeThread extends Thread {
-
- Gauge gauge;
- static int seed = 1;
-
- GaugeThread(Gauge gauge) {
- super("Gauge thread");
- this.gauge = gauge;
- }
-
- public void run () {
- Random rand = new Random(seed++);
- int i = gauge.getTotalAmount()/2;
- while(true) {
- float r = rand.nextFloat();
- if(r > .5) {
- if(i < gauge.getTotalAmount())
- i+=2;
- } else {
- if(i > 0)
- i-=2;
- }
-
- gauge.setCurrentAmount(i);
- try {
- sleep(100);
- } catch (java.lang.InterruptedException e) {
- }
- }
- }
- }
-